iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
自我挑戰組

ROS 筆記:要怎麼叫無人機自己飛系列 第 14

【ROS 筆記:要怎麼叫無人機自己飛】Day 14:Gazebo 又是什麼?

  • 分享至 

  • xImage
  •  

這個系列文寫到這裡,理論上利用前面介紹的 ROS 基本用法,搭配前人們為各廠牌無人機製作的驅動程式,其實就可以直接開始寫程式控制無人機了。

但是畢竟不是每個人家裡都有一台無人機,所以在開始料理無人機之前,先來介紹接下來這幾篇的主角: Gazebo 機器人模擬器。

Gazebo 機器人模擬器

Gazebo 是一個開源的 3D 機器人模擬器,由非營利公司 Open Robotics 開發,這間公司同時也是 ROS 系統的開發商。由於是同一間公司的產品,Gazebo 可以與 ROS 無縫整合,使得 ROS 開發者可以在 Gazebo 上進行機器人軟體的測試與驗證,不需要擔心碰到機器人沒電、電腦和機器人無法連線或是機器人撞壞摔爛的情況,整個開發過程體驗更加愉快。

圖片來源:Gazebo.org 首頁

啟動 Gazebo

如果當初是安裝 Desktop-Full(建議選項)的話,那麼相應版本 Gazebo (N 版的 ROS 搭配的是 Gazebo 11)也會一起安裝好。

直接在終端機輸入 gazebo 就會直接啟動 Gazebo 主程式:

$ gazebo

如果沒有的話,可以參考官方的安裝步驟

簡單的介面操作:

  • 滑鼠滾輪:拉近拉遠
  • 按住滑鼠中鍵拖曳:旋轉視角
  • 按住滑鼠右鍵拖曳:平移視角

一個 ROS-Gazebo 專案的組成

Gazebo 本身就是一個可以獨立運行的模擬器軟體,可以透過圖形介面的左側工具列來插入、建立或修改模擬環境中的 3D 模型。

不過在這個系列文中,我要介紹的是透過 ROS 的指令來使用 Gazebo 的方法。這種做法的好處是可以根據開發者的需求來定義模型與場景、設定機器人的行為、處理感測器的資料等,真正意義上地模擬真實世界中機器人的任務情境。

在一個 ROS-Gazebo 專案中,目錄內通常會包含以下幾個部份:

  • launch(啟動目錄):

    在 Day 6 提到 roslaunch 是用來啟動一個套件中多個節點的工具,在大型的 ROS 專案中,通常都會需要同時啟動多個節點,並且為這些節點設定許多參數。例如要讓機器人執行自主導航任務時,除了產生機器人的節點之外,還要啟動動作控制、定位、讀取感測器、建立地圖等套件內的節點們。

    而啟動檔(.launch 檔)就是給 roslaunch 用來啟動多個節點、設定參數、載入環境變數的配置文件。對於我們現在要做的 Gazebo 模擬,啟動檔會負責啟動 Gazebo 模擬器、載入指定的模型檔、世界檔,並啟動與無人機控制相關的 ROS 節點。

  • models (模型目錄)或 urdf (機器人目錄):

    models 目錄用來放置定義模型性質的模型描述檔(.sdf 檔),以及模型的 3D 檔案。SDF(Simulation Description Format)是 Gazebo 用來將模型呈現在模擬環境中的一種檔案格式。而 Gazebo 支援的 3D 模型檔案類型有 .dae.stl,這些模型檔案是用來呈現場景中的物件外觀。

    URDF(Unified Robot Description Format),這類型的檔案在 ROS 中專門用來描述機器人的結構、運動關節和感測器的設定。

    SDF 和 URDF 這兩種格式都可以用來描述機器人,前者是 Gazebo 模擬用的格式,而 URDF 則是 ROS 控制的格式。而且兩者文件編寫方式很接近,之後會著重在 SDF 的部分。

  • world(世界目錄):

    世界檔(.world 檔)定義了 Gazebo 模擬中的世界環境。這個檔案描述了模擬場景中的所有物體,包括地形、靜態物件(如牆壁、障礙物)、燈光、攝影機,以及機器人模型的初始位置。


如果各位還記得 Day 5 用來示範安裝套件的 Two wheeled robot 的話,可以在 m2wr_description 這個套件中看到 launchworldurdf 的內容。我在後面的文章會繼續介紹裡面的檔案大概會長什麼樣子,而各位可以搭配現成的套件看看機器人開發者都怎麼寫這些文件。


上一篇
【ROS 筆記:要怎麼叫無人機自己飛】Day 13:機器人學的基礎知識
系列文
ROS 筆記:要怎麼叫無人機自己飛14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言